<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    function Car(name, color) {
      this.name = name;
      this.color = color;
    }
    // Car.prototype = {}
    Car.prototype.run = function () {
      alert("跑")
    }
    Car.prototype.jia = function () { }

    // 每一个实例对象又有一个__proto__属性，指向的构造函数的原型对象，构造函数的原型对象也是一个对象
    // ，也有__proto__属性，这样一层一层往上找就形成了原型链。
    // 1.查找属性，如果本身没有，则会去__proto__中查找，也就是构造函数的显式原型中查找，
    // 如果构造函数中也没有该属性，因为构造函数也是对象，也有__proto__，
    // 那么会去它的显式原型中查找，一直到null，如果没有则返回undefined

    // 每个对象都有__proto__ 属性（隐式原型）
    var qq = new Car("奇瑞qq", "蓝色");
    // qq.__proto__ ==Car.prototype
    qq.run()
    console.log(qq)
    // qq.run()
    console.log(qq.toString())
    console.log(JSON.stringify(qq))

  </script>
</body>

</html>